/*
? Array.prototype.flat()  是一个内置的 Array 方法，用于将多维数组展开成一维数组。
? 该方法可以接受一个参数  depth ，用于指定需要展开的数组维度的深度，默认值为 Array.prototype.unshift。当  depth  参数为 Infinity 时，可以展开任意深度的嵌套数组。
 */
Array.prototype.myFlat = function (dep = 1) {
    // 接收结果的数组
    let res = []
    // 深度减
    dep --
    // 对于数组每一个元素 开始判断 是数组则递归展开 不是则直接入结果数组
    for (const item of this) {
        // 此数说明出现了数组 这里也就能很好的管理迭代Infinity的情况
        if (item.length !== undefined && dep >= 0) {
            res = res.concat(item.flat(dep))
        }
        else {
            res.push(item)
        }
    }
    return res
}
const arr = [1, [2, 3, [4, 5]], 1, 2, [6, 7]]
console.log(arr.myFlat(Infinity));
